package queuedemo;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 用队列实现栈
 */

class MyStack {
    private Queue<Integer> qu1;
    private Queue<Integer> qu2;

    public MyStack() {
        qu1=new LinkedList<>();
        qu2=new LinkedList<>();


    }
    /**
    入到不为空的队列当中
    如果都为空 放到qu1当中
     */
    
    public void push(int x) {
        if(!qu1.isEmpty()){
            qu1.offer(x);
        }else if(!qu2.isEmpty()){
            qu2.offer(x);

        }else{
            qu1.offer(x);
        }

    }
    
    public int pop() {
        //1.先判断当前“栈”是否为空
        if(empty()){
            return -1;
        }
          int tmp = -1;
        if(!qu1.isEmpty()){
            //出这个不为空的队列，出size-1
            int size=qu1.size();
            for(int i =0;i<size-1;i++){
                tmp =qu1.poll();
                qu2.offer(tmp);
            }
            return qu1.poll();
        }else{
            int size=qu2.size();
            for(int i =0;i<size-1;i++){
                 tmp=qu2.poll();
                qu1.offer(tmp);
            }
            return qu2.poll();

        }

    }
    
    public int top() {
       if(empty()){
            return -1;
        }
        int tmp = -1;
        if(!qu1.isEmpty()){
            //出这个不为空的队列，出size-1
            int size=qu1.size();
            
            for(int i =0;i<size;i++){
                tmp =qu1.poll();
                qu2.offer(tmp);
            }
            return tmp;
        }else{
            int size=qu2.size();
            for(int i =0;i<size;i++){
                 tmp =qu2.poll();
                qu1.offer(tmp);
            }
            return tmp;

        }
    }
    
    public boolean empty() {
        return qu1.isEmpty()&&qu2.isEmpty();

    }
}

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack obj = new MyStack();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.top();
 * boolean param_4 = obj.empty();
 */